//
//  NSDate+Extension.swift
//  Weibo
//
//  Created by 冯毅 on 16/8/14.
//  Copyright © 2016年 冯毅. All rights reserved.
//

import UIKit
extension NSDate {
    //  通过时间字符串转成时间对象
    class func sinaDate(createDateStr: String) -> NSDate {
        //  代码执行到此,表示发微博时间不为nil,表示没有问题
        let dt = NSDateFormatter()
        //  指定格式化方式
        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        //  指定本地化信息
        dt.locale = NSLocale(localeIdentifier: "en_US")
        //  通过格式化方式转化成时间对象
        let createDate = dt.dateFromString(createDateStr)!
        
        return createDate
    }
    
    var sinaDateString: String {
        
        let dt = NSDateFormatter()
        dt.locale = NSLocale(localeIdentifier: "en_US")
        if isThisYear(self) {
            //  日历对象
            let calendar = NSCalendar.currentCalendar()
            
            if calendar.isDateInToday(self) {
                //  获取发微博时间距离当前时间差多少秒
                let timeInterVal =  abs(self.timeIntervalSinceNow)
                if timeInterVal < 60 {
                    return "刚刚"
                } else if timeInterVal < 3600 {
                    let result = timeInterVal / 60
                    return "\(Int(result))分钟前"
                } else {
                    let result = timeInterVal / 3600
                    return "\(Int(result))小时前"
                }
                
                
            } else if calendar.isDateInYesterday(self){
                dt.dateFormat = "昨天 HH:mm"
            } else {
                dt.dateFormat = "MM-dd HH:mm"
            }
            
            
        } else {
            dt.dateFormat = "yyyy-MM-dd HH:mm"
        }
        
        return dt.stringFromDate(self)

        
    }
    
    //  根据时间判断是否是今年
    private func isThisYear(createDate:NSDate) -> Bool {
        
        let dt = NSDateFormatter()
        
        //  指定格式化方式
        dt.dateFormat = "yyyy"
        
        //  指定本地化信息
        dt.locale = NSLocale(localeIdentifier: "en_US")
        
        let createDateYear = dt.stringFromDate(createDate)
        
        let currentDateYear = dt.stringFromDate(NSDate())
        
        return createDateYear == currentDateYear
        
    }

}
